﻿#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//
//int main()
//{
//	//调试监视
//	int arr[10] = { 0 };
//	int num = 100;
//	char c = 'w';
//
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		arr[i] = i;
//	}
//
//	return 0;
//}


//#include <stdio.h>
//
//int main()
//{
//	//求n的阶乘
//	//先产生1~n的数字
//	int n = 0;
//	scanf("%d", &n);
//	int ret = 1;
//
//	int i = 0;
//	for (i = 1; i <= n; i++)//先从1!阶乘开始设计，逐步修改变量。
//	{
//		ret = ret * i;//第一次1*1 第二次 1*2 第3次(1*2 = 2) *3 第4次 (1*2*3= 6)*4
//	}
//
//	return 0;
//}


//求1!~10!的和
//两个for复杂了。
//#include <stdio.h>
//
//int main()
//{
//	//0! = 1特殊
//	//1! = 1 * 1
//	//2! = 1! * 2
//	//3! = 2! * 3
//	//4! = 3! * 4
//	//int i = 0;
//	//int ret = 1;
//	//for (i = 1; i <= 10; i++)
//	//{
//	//	ret = ret * i;
//	//}
//	
//
//	int i = 0;
//	int ret = 0;
//	int sum = 0;
//	int n = 0;
//
//	for (int n = 1; n <= 10; n++)
//	{
//		ret = 1;
//		for (i = 1; i <= n; i++)//先算n!
//		{
//			ret = ret * i;
//		}
//		sum = sum + ret;
//	}
//
//	printf("%d\n", sum);
//
//	return 0;
//}


//数组越界调试
//#include <stdio.h>
//
//int main()
//{
//	int arr[10] = { 0 };
//
//	int i = 0;
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = i;
//		printf("%d\n", arr[i]);
//	}
//
//	return 0;
//}


//#include <stdio.h>
//
//void test1(int d[])
//{
//
//}
//
//void test2(int d[3][5])
//{
//
//}
//
//int main()
//{
//	int arr1[10] = { 0, 1, 2, 3 };
//	//int arr2[3][5] = { 0, 1, 2, 3 };
//	test1(arr1);
//	//test2(arr2);
//
//	return 0;
//}




//求1!~10！的和，简化版
#include <stdio.h>

int main()
{
	int i = 0;
	int ret = 1;
	int sum = 0;
	for (i = 1; i <= 10; i++)
	{
		ret = ret * i;
		sum = sum + ret;//每求一个阶乘就加起来
	}
	printf("%d\n", sum);

	return 0;
}


//环境要求：VS2022/VS2019 X86 Debug
//#include <stdio.h>
//
//int main()
//{
//	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//
//	int i = 0;
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = 0;//数组越界有可能将i赋为0，导致死循环。
//		printf("hh\n");
//	}
//
//	return 0;
//}



